<

プラグインのテスト

すべての通常のタイプの flutter テストに適用する プラグイン パッケージも同様ですが、プラグインには次のものが含まれるため、 ネイティブ コードでは他の種類のテストも必要になることがよくあります すべての機能をテストします。

プラグインテストの種類

これらのタイプのテストのそれぞれの例を確認するには、次の手順を実行します。プラグインテンプレートから新しいプラグインを作成するそして、示されたディレクトリを調べます。

  • ダーツ単体テストウィジェットのテスト。 これらのテストにより、プラグインの Dart 部分をテストできます。 非プラグイン パッケージの Dart コードをテストするのと同じように。 ただし、プラグインのネイティブ コードは、ロードされません、 そのため、プラットフォーム チャネルへの呼び出しはすべて次のようにする必要があります。テストで嘲笑される

    を参照してください。testディレクトリを例に挙げます。

  • ダーツ統合テスト。 統合テストはコンテキストで実行されるため、 Flutter アプリケーション (サンプル アプリ)、 Dart とネイティブ コードの両方をテストできます。 それらの間の相互作用も同様です。 Web 実装の単体テストにも役立ちます ブラウザで実行する必要があるコード。

    これらは多くの場合、プラグインにとって最も重要なテストです。 ただし、Dart 統合テストはネイティブ UI と対話できません。 ネイティブ ダイアログやプラットフォーム ビューのコンテンツなど。

    を参照してください。example/integration_testディレクトリを例に挙げます。

  • ネイティブ単体テスト。Dart の単体テストで Dart の部分をテストできるのと同じように、 プラグインを分離して、ネイティブ単体テストを行うことができます。 ネイティブ部分を単独でテストします。 各プラットフォームには独自のネイティブ単体テスト システムがあり、 テストは同じ母国語で書かれています テスト中のコードとして。

    ネイティブ単体テストは特に価値があります プラグイン コードでラップされた API をモックアウトする必要がある場合は、 これは Dart 統合テストでは不可能です。

    任意のネイティブ テスト フレームワークをセットアップして使用できます 各プラットフォームについてよく知っている、 ただし、以下はプラグイン テンプレートですでに構成されています。

    • アンドロイド:JUnitテストは次の場所にありますandroid/src/test/

    • iOSマックOS:XCTestテストは次の場所にありますexample/ios/RunnerTests/example/macos/RunnerTests/それぞれ。 これらはサンプルディレクトリにあります。 最上位のパッケージ ディレクトリではなく、 これらはサンプルアプリのプロジェクト経由で実行されるためです。

    • Linuxウィンドウズ:Googleテストテストは次の場所にありますlinux/test/windows/test/、 それぞれ。

他の種類のテスト(現在事前構成されていない) テンプレートには、ネイティブUIテスト。 ネイティブ UI テスト フレームワークでアプリケーションを実行すると、 そのようなエスプレッソまたXCUITテスト、 ネイティブ UI 要素と Flutter UI 要素の両方を操作するテストを有効にします。 したがって、プラグインをテストしないとテストできない場合に役立ちます。 ネイティブ UI インタラクション。

テストの実行

Dart 単体テスト

これらは他の Flutter 単体テストと同様に実行できます。 お好みの Flutter IDE から、 または使用してflutter test

結合テスト

このタイプのテストの実行については、次を参照してください。統合テストのドキュメント。 コマンドは次の場所で実行する必要があります。exampleディレクトリ。

ネイティブ単体テスト

すべてのプラットフォームで、サンプルをビルドする必要があります。 単体テストを実行する前に少なくとも 1 回アプリケーションを実行し、 プラットフォーム固有のビルドがすべて確実に実行されるようにするため、 ファイルが作成されました。

Android JUnit

サンプルを Android プロジェクトとして開いている場合 Android Studio では、次を使用して単体テストを実行できます。 のAndroid Studio テスト UI。

コマンドラインからテストを実行するには、 で次のコマンドを使用します。example/androidディレクトリ:

./gradlew testDebugUnitTest

iOS および macOS XCTest

Xcode でサンプル アプリを開いている場合は、 を使用して単体テストを実行できます。Xcode テスト UI。

コマンドラインからテストを実行するには、 で次のコマンドを使用します。example/ios(iOSの場合) またexample/macos(macOS の場合) ディレクトリ:

xcodebuild test -workspace Runner.xcworkspace -scheme Runner -configuration Debug

iOS テストの場合は、最初に開く必要がある場合があります。Runner.xcworkspaceXcode でコード署名を設定します。

Linux GoogleTest

コマンドラインからテストを実行するには、 サンプルディレクトリで次のコマンドを使用します。 「my_plugin」をプラグイン プロジェクト名に置き換えます。

build/linux/plugins/x64/debug/my_plugin/my_plugin_test

サンプル アプリをリリース モードではなくリリース モードでビルドした場合 デバッグ。「デバッグ」を「リリース」に置き換えます。

Windows Googleテスト

Visual Studio でサンプル アプリを開いている場合は、 を使用して単体テストを実行できます。Visual Studio テスト UI。

コマンドラインからテストを実行するには、 サンプルディレクトリで次のコマンドを使用します。 「my_plugin」をプラグイン プロジェクト名に置き換えます。

build/windows/plugins/my_plugin/Debug/my_plugin_test.exe

サンプルアプリをリリースモードでビルドした場合は、 「デバッグ」ではなく、「デバッグ」を「リリース」に置き換えてください。

追加するテストの種類

Flutter プロジェクトをテストするための一般的なアドバイスプラグインにも適用されます。 プラグインのテストに関する追加の考慮事項:

  • 通信をテストできるのは統合テストのみであるため、 ダーツと母国語の間で、 それぞれに対して少なくとも 1 つの統合テストを行うようにしてください。 プラットフォームチャネルコール。

  • 統合を使用して一部のフローをテストできない場合 テスト - たとえば、以下との対話が必要な場合 ネイティブ UI またはデバイス状態のモック - 記述することを検討してください 単体テストを使用した 2 つの部分の「エンドツーエンド」テスト:

    • 必要なモックをセットアップするネイティブ単体テスト、 次に、メソッドチャネルのエントリポイントを呼び出します。 合成された呼び出しを使用してメソッドの応答を検証します。

    • プラットフォーム チャネルを模擬する Dart 単体テスト、 次に、プラグインのパブリック API を呼び出し、結果を検証します。